//准备actions对象——响应组件中用户的动作，业务逻辑通常放在这里处理完成，这里除了接收用户的dispatch，还可以dispatch到另外一个方法中，形成链式的处理过程
// 专门呢个用于操作count相关的逻辑
export default {
    namespaced: true,
    actions:{
        increment(context,value){
            context.commit('INCREMENT',value)
        },
        decrement(context,value){
            console.log("获取到上下文:",context)
            context.commit('DECREMENT',value)
    
        },
        //当前state状态为奇数时在加
        incrementOdd(context,value){
            if(context.state.sum %2 !== 0){
                context.commit('INCREMENT',value)
            }
        },
        incrementWait(context,value){
            setTimeout(()=>{
                context.commit('INCREMENT',value)
            },500)
        },
        chainfilter(context,value){
            console.log('chainfilter被调用了');
            
            context.dispatch('demo',value)
        },
        demo(context,value){
            console.log('demo被调用了');
            context.commit('INCREMENT',value)
        }
    },
    mutations:{
        INCREMENT(state,value){
            state.sum += value
        },
        DECREMENT(state,value){
            state.sum -= value
        }
    },
    state:{   //准备state对象——保存具体的数据 mutations->state vuex会自动维护
        sum: 0, //当前计算和的状态
        school: '尚硅谷',
        subject: 'vue'
    },
    getters:{
        //模拟一个非常复杂的运算
        bigSum(state){
            return state.sum*10
        }
    }
}